package com.sxj.corejava.code09_集合.map;

import java.util.HashMap;

/**
 * @author 石小俊
 * @date 2025年02月20日
 */
public class Test01_HashMap {

    public static void main(String[] args) {
        HashMap<Integer, String> map = new HashMap<>();
        HashMap<Integer, String> map2 = new HashMap<>(10);
        HashMap<Integer, String> map3 = new HashMap<>(10, 0.8f);
        // Map集合由键值对组成,添加数据时需要指定key与value
        // key的值对应的泛型中第一个参数的类型
        // value的值对应的是泛型中第二个参数的类型
        // map.put(key,value);
        map.put(1, "admin");
        map.put(2, "jack");
        map.put(3, "tom");
        // key的值不能重复,如果重复则覆盖,相当于做了修改操作
        map.put(3, "alex");
        // value的值可以相同
        map.put(4, "jack");
        // 理论上来说,key与value的值均可以为null
        // 但是由于null属于非正常数据,在实际开发中一般不建议使用
        map.put(null, null);
        System.out.println(map);

        HashMap<Integer, String> map4 = new HashMap<>(map);
        System.out.println(map4);

        System.out.println("获取key为1的元素:" + map.get(1));
        System.out.println("获取key为2的元素:" + map.get(2));

        // 移除指定key的元素
        map.remove(4);
        map.remove(null);
        System.out.println(map);

        System.out.println("集合中是否包含key为2的元素:" + map.containsKey(2));
        System.out.println("集合中是否包含value为admin的元素:" + map.containsValue("admin"));

        System.out.println("集合是否为空:" + map.isEmpty());
        System.out.println("集合中键值对的数量:" + map.size());

        // 清空集合
        map.clear();
        System.out.println(map);
        System.out.println("集合是否为空:" + map.isEmpty());
    }

}
